Devices may be connected to other devices. The devices may include, for example, servers, operating systems, disks, volumes, and so on. Thus, “device”, as used herein may refer to a physical (e.g., server, disk) and/or logical (e.g., operating system, volume) entity. There are different ways to connect devices (e.g., SCSI (small computer systems interface), ATA (advanced technology attachment)).
Another way to connect devices is using serial attached SCSI (SAS). The SAS specification defines an external connector and cabling system for box-to-box connections required by SCSI applications. Such point-to-point (P2P) configurations achieve high bandwidth but may require intermediary devices between initiator devices like servers and target devices like disks. Thus, the SAS specification defines an expander for use in the SAS environment. SAS expanders may function as the intermediary devices. These SAS expanders facilitate architecting systems in which a set of initiators (e.g., blade servers) may have a set of connections to a set of targets (e.g., disks).
SAS devices contain virtual constructs called ports. Ports include PHYs. A PHY includes a transceiver—a transmitter and a receiver—through which signals can be transmitted to and/or received from another PHY. A physical link attaches two PHYs together. SAS ports and SAS expanders have unique SAS addresses (e.g., 64 bit SAS address). Similarly, PHYs have unique identifiers. Thus, a port, as a virtual construct, may include groups of PHYs with the same SAS address that can be attached to another group of PHYs sharing an SAS address.
An end device is an SAS device that is not an expander device. Example end devices include a host bus adapter (HBA), a disk drive, a blade server, and so on. End devices may be connected directly to an HBA, in which case the number of SAS physical links available through the HBA limits the size of the SAS domain (e.g., 16 devices). Alternatively, end devices may be connected indirectly to an HBA through SAS expanders. In this way the potential size of an SAS domain can be increased (e.g., 16,000 devices).
A conventional SAS expander can be viewed as a switch having a set of ports and logic that implements part of an SAS protocol. The switch enables multiple point to point connections to be made from a single HBA enclosure and for multiple SAS devices to be aggregated into an SAS domain.
SAS expanders may be configured so that end devices (not SAS expanders) connecting to the SAS expanders may be either SAS devices or SATA (serial ATA) devices. The SAS expanders may be fan-out expanders and/or edge expanders. Generally, an SAS domain may include one fan-out expander and one or more edge expanders. A fan-out expander may connect to a maximum of 128 SAS devices which may include combinations of initiators, targets, and edge expanders. An edge expander may in turn be connected to a maximum of 128 SAS devices, which may include no more than one other expander. Thus, a fan-out expander connected to 128 edge connectors, each of which is in turn connected to 127 fan-out devices, would describe an SAS domain with over 16,000 devices.
Addressing such a large number of devices in an SAS domain may include using globally unique identifiers like worldwide names (WWN) for the SAS devices. Therefore, many SCSI devices come pre-configured with WWNs. When a system described by an SAS domain is being powered-on, the SAS devices in the system discover and establish connections with each other. During the discovery phase, WWNs may be exchanged so that the number and type(s) of devices connected in the SAS domain can be determined. As they are discovered, paths between initiators and targets may be stored, for example, in routing tables in SAS expanders. Conventionally, all initiators are given access to all targets.
SAS uses three different protocols to transport information. SSP (Serial SCSI Protocol) supports SCSI devices, drives, and so on. STP (Serial ATA Tunneling Protocol) supports ATA devices, drives, and so on. SMP (Serial Management Protocol) supports SAS expanders and manages SAS's point to point topology.
SAS protocols may be viewed as having four layers: a PHY layer, a link layer, a port layer, and a transport layer. An SAS port may implement these four layers. The transport layer encapsulates commands, data, status and the like into SAS frames (data packets) and assigns them to the port layer. The transport layer receives SAS frames from the port layer, extracts data from the frames, and sends the data to an application layer. The port layer receives packets from the transport layer and sends messages to the link layer. These messages may facilitate, for example, establishing connections. The port layer may also select PHYs through which frames may be transmitted. The port layer may also receive signals from the link layer and provide packets to the transport layer. The link layer facilitates controlling the PHY layer for connection management. The PHY layer includes hardware like transceivers that facilitate connecting to a physical interface and thus physically sending and/or receiving signals.
Conventionally, the SAS standard is functionally permissive and thus may facilitate connecting all sources to all targets. A conventional SAS expander may have no processor and little memory. Additionally, a conventional SAS expander may be configured to allow other devices to manipulate its memory, in particular a routing table located in the memory on the SAS expander. Thus, the SAS expander may have little, if any, ability to control (e.g., allow, prevent) certain devices from communicating with other devices, to facilitate isolating devices physically and/or logically, to provide basic security features, and the like.